<?php
	session_start();
	Header("Content-type: image/gif");
	class verificationCode{
		private $codes = '';            //验证码
		//==================================================
		//
		//      初始化函数
		//      1.验证字符取自数字0-9以及所有大写字母
		//      2.每次随机取出4位
		//
		//==================================================
		function __construct(){
			$code = "0-1-2-3-4-5-6-7-8-9-A-B-C-D-E-F-G-H-I-J-K-L-M-N-O-P-Q-R-S-T-U-V-W-X-Y-Z";
			$codeArray = explode('-',$code);
			shuffle($codeArray);                                        //打乱字符顺序
			$this->codes = implode('',array_slice($codeArray,0,4));   //取前4位字符
		}
		//==================================================
		//
		//      创建图片函数
		//      1.此处用户可自定义图片的长与宽，通过参数传入
		//      2.每次随机取出4位
		//
		//==================================================
		public function createImg($width,$height){                   
			$_SESSION['check_code'] = $this->codes;                                                //SESSION存储
			$img = imagecreate($width,$height);                                                   //创建图片
			$bg_color = imagecolorallocate($img,222,222,222);                                    //背景色，需在其他颜色之前定义
			$border_color = imagecolorallocate($img,200,200,200);                                //边框颜色
			$font_color = imagecolorallocate($img,116,168,61);                                   //字体颜色
			imagerectangle($img,0,0,$width-1,$height-1,$border_color);                           //利用矩形绘制函数描边
			for($i=1;$i<$height-1;$i++){                                                         //利用循环画干扰线
				$line_color = imagecolorallocate($img,rand(200,255),rand(200,255),rand(200,255));//线条随机颜色
				imageline($img,2,$i,$width-2,$i,$line_color);
			}
			for ($i=0;$i<4;$i++){                                                                  //利用循环输入字符，控制字距
				imagestring($img,rand(5,6),8+$i*($width/4.2),rand(2,8),$this->codes[$i],$font_color);
			}
			imagegif($img);
		}
		
	}
	
	$newCode = new verificationCode();        //实例化
	$newCode->createImg(80,30);               //创建图片
	$newCode = null;                         //释放
?>